import { jsonrepair } from 'jsonrepair'
// 自定义 JSON 预处理修复函数
function preprocessJSON(input) {
  let fixed = input.trim();

  // 移除末尾的多余逗号
  fixed = fixed.replace(/,\s*([\]}])/g, '$1');

  // 计算数组和对象的括号是否匹配
  const openBrackets = (fixed.match(/\[/g) || []).length;
  const closeBrackets = (fixed.match(/\]/g) || []).length;
  const openBraces = (fixed.match(/\{/g) || []).length;
  const closeBraces = (fixed.match(/\}/g) || []).length;

  // 如果以 "[" 开头且 "]" 不匹配，补上 "]"
  if (fixed.startsWith('[') && openBrackets > closeBrackets) {
    fixed += ']';
  }

  // 如果以 "{" 开头且 "}" 不匹配，补上 "}"
  if (fixed.startsWith('{') && openBraces > closeBraces) {
    fixed += '}';
  }

  return fixed;
}

// 封装的 JSON 修复函数
export function fixAndParseJSON(input) {
  try {
    // 先预处理
    let preprocessed = preprocessJSON(input);

    // 再使用 jsonrepair 进行修复
    const repaired = jsonrepair(preprocessed);

    // 最后解析修复后的 JSON
    return JSON.parse(repaired);
  } catch (error) {
    console.error("无法修复和解析 JSON 数据：", error);
    return null;
  }
}